package io.dwak.holohackernews.app.base;
import android.animation.Animator;
import android.animation.AnimatorInflater;
import android.animation.ObjectAnimator;
import android.os.Build;
import android.view.View;
import android.widget.ProgressBar;
import com.trello.rxlifecycle.components.support.RxFragment;
import io.dwak.holohackernews.app.R;
import rx.Subscription;
public abstract class BaseFragment extends RxFragment{
protected View mContainer;
protected ProgressBar mProgressBar;
protected Subscription mSubscription;
protected void showProgress(boolean showProgress){
if(getActivity() == null){
return;
}
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
ObjectAnimator fadeIn = (ObjectAnimator) AnimatorInflater.loadAnimator(getActivity(), R.animator.fadein);
ObjectAnimator fadeOut = (ObjectAnimator) AnimatorInflater.loadAnimator(getActivity(), R.animator.fadeout);
if (showProgress) {
FadeListener fadeInListener = new FadeListener(mContainer, mProgressBar);
fadeIn.addListener(fadeInListener);
fadeIn.start();
}
else {
FadeListener fadeOutListener = new FadeListener(mProgressBar, mContainer);
fadeOut.addListener(fadeOutListener);
fadeOut.start();
}
}
else {
mProgressBar.setVisibility(showProgress ? View.VISIBLE : View.GONE);
mContainer.setVisibility(showProgress ? View.GONE : View.VISIBLE);
}
}
class FadeListener implements Animator.AnimatorListener{
View mFromView;
View mToView;
FadeListener(View fromView, View toView) {
mFromView = fromView;
mToView = toView;
}
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
mFromView.setVisibility(View.GONE);
mToView.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
}
}